Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

231
Views
Mecanografiado cualquiera | any[] como parámetro de función

He estado trabajando con algún middleware de validación que me gustaría ampliar para permitir tanto las clases (cualquiera) como las matrices (cualquiera []) como entrada. El tipo de clase se usa como un parámetro de entrada, y he podido cambiar con éxito la función para aceptar tipos de matriz también. El problema surge cuando intento permitir ambos tipos y alimentar la entrada a la función. Como sigue

 import { plainToClass } from 'class-transformer'; import { validate, ValidationError } from 'class-validator'; const validateType = ( type: any | any[], value: string, ): void => { validate(plainToClass(type, value), { }).then((errors: ValidationError[]) => { if (errors.length > 0) { console.log(`Errors found`); } else { console.log(`Success`); } });

Esta función compilará si doy una clase como entrada, pero falla cuando le doy una matriz;

 class CreateObjectDto { public a: string; public b: string; } const inputString = "{a: \"something\", b: \"else\"}" const inputArray = "[{a: \"something\", b: \"else\"}, {a: \"another\", b: \"more\"}]" validateType(CreateObjectDto, inputString); // pass validateType(CreateObjectDto, inputArray); // fail

Si modifico la función, solo acepto matrices (tipo: any[]), la función tiene éxito cuando se ejecuta. No he podido encontrar una forma de escribir el tipo de entrada como una matriz para permitir que la función acepte ambos tipos de datos.

¿Cuál sería la forma de declarar CreateObjectDto[] como parámetro de entrada a la función? ¿O cómo puedo cambiar la firma de la función para permitirle determinar con éxito si la cadena de entrada contiene un tipo o una matriz de tipos?

Gracias.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Si necesita una firma de función que tome any o any[] entonces debe escribir una implementación que discrimine el tipo y maneje el argumento de manera adecuada de esta manera:

 function validateType( type: any | any[], value: string, ): void { if (type instanceof Array) { type // any[] } else { type // any } }

patio de recreo mecanografiado

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!